package usecasesimpl;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import usecases.GestionTour;
import dao.JoueurDao;
import dao.PartieDao;
import dao.TourDao;
import domaine.Action;
import domaine.Joueur;
import domaine.Partie;
import domaine.Tour;
import enumere.Couleur;

@Stateless
public class GestionTourImpl implements GestionTour {
	@EJB
	private TourDao tdao;
	@EJB
	private JoueurDao jdao;
	@EJB
	private PartieDao pdao;
	

	@Override
	public Tour enregistrerTour(Tour t) {
		Tour tour = tdao.enregistrer(t);
		return tour;
	}

	@Override
	public boolean choisirLink(String link, int idJoueur, int idTour, int idPartie) {
		Tour tour = tdao.rechercher(idTour);
		Joueur joueur = jdao.rechercher(idJoueur);
		Partie p = pdao.rechercher(idPartie);
		p = pdao.chargerTout(p);
		tour = tdao.chargerTout(tour);
		
		int gemmes = p.getGemmesDunJoueur(joueur);
		if(gemmes<1){
			return false;
		}
		Action a = new Action(gemmes);
		if(link!=null){
			a.setLinkChoisis(Couleur.valueOf(link));
		}
		//soit le joueur n'a rien choisi, soit il n'a pas choisi le bon
		if (link == null || !link.equals(tour.getGagnant())){
			a.setGemmeRestantes(a.getGemmeRestantes()-1);
			p.getGemmes().put(joueur, p.getGemmesDunJoueur(joueur)-1);
		}else if (link.equals(tour.getGagnant()) && tour.getGagnant().equals(Couleur.GRIS)){
			a.setGemmeRestantes(a.getGemmeRestantes()+1);
			p.getGemmes().put(joueur, p.getGemmesDunJoueur(joueur)-1);
		}
		tour.getJoueursAction().put(joueur, a);
		tour = tdao.mettreAJour(tour);
		pdao.mettreAJour(p);
		return true;
	}

	@Override
	public Tour lancerLesDes(Tour tour) {
		tour.lancerDes();
		return tour = tdao.mettreAJour(tour);
	}
	
	@Override
	public void clear() {
		tdao.clear();
		
	}
	

}
